package org.pps.gl.client.vue;

import java.util.ArrayList;

import org.pps.gl.client.GetInfoService;
import org.pps.gl.client.GetInfoServiceAsync;
import org.pps.gl.client.LoginInfo;

import com.google.gwt.core.client.GWT;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.HasHorizontalAlignment;
import com.google.gwt.user.client.ui.HasVerticalAlignment;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.VerticalPanel;

public class RSX_Statistiques extends Composite {
	VerticalPanel flux;
	Label label1, label2, label3, label4, label5, label;

	public RSX_Statistiques() {
		flux = new VerticalPanel();
		flux.setStyleName("profilMarge");
		Label titre = new Label("Statistiques");
		titre.setStylePrimaryName("titre");
		flux.add(titre);

		// nombre de contact de 1er niveau
		label1 = new Label("Vous avez 0 contacts.");
		label1.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_LEFT);
		flux.add(label1);
		flux.setCellHeight(label1, "10px");
		flux.setCellVerticalAlignment(label1, HasVerticalAlignment.ALIGN_MIDDLE);
		label1.setSize("100%", "40px");
		
		// second niveau
		label2 = new Label("Vous avez 0 contacts de second niveau.");
		label2.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_LEFT);
		flux.add(label2);
		flux.setCellHeight(label2, "10px");
		flux.setCellVerticalAlignment(label2, HasVerticalAlignment.ALIGN_MIDDLE);
		label2.setSize("100%", "20px");
		
		label3 = new Label("Vous avez 0 contacts de troisième niveau.");
		label3.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_LEFT);
		flux.add(label3);
		flux.setCellHeight(label3, "20px");
		flux.setCellVerticalAlignment(label3, HasVerticalAlignment.ALIGN_MIDDLE);
		label3.setSize("100%", "20px");
		
		label4 = new Label("Vous avez 0 contacts de quatrième niveau.");
		label4.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_LEFT);
		flux.add(label4);
		flux.setCellHeight(label4, "20px");
		flux.setCellVerticalAlignment(label4, HasVerticalAlignment.ALIGN_MIDDLE);
		label4.setSize("100%", "20px");
		
		label5 = new Label("Vous avez 0 contacts de cinquième niveau.");
		label5.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_LEFT);
		flux.add(label5);
		flux.setCellHeight(label5, "20px");
		flux.setCellVerticalAlignment(label5, HasVerticalAlignment.ALIGN_MIDDLE);
		label5.setSize("100%", "20px");

		// nombre d'utilisateur du site
		label = new Label("Il y a " + LoginInfo.getCurrentUser().getAllEmail().size()
                                + " utilisateurs sur Polytech +.");
		label.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_LEFT);
		flux.add(label);
		flux.setCellHeight(label, "40px");
		flux.setCellVerticalAlignment(label, HasVerticalAlignment.ALIGN_MIDDLE);
		label.setSize("100%", "20px");

		// mise-à-jour des statistiques
		GetInfoServiceAsync getInfoService = GWT.create(GetInfoService.class);
		getInfoService.getNbrContactSecond(LoginInfo.getCurrentUser()
				.getEmailAddress(), new AsyncCallback<ArrayList<Integer>>() {

			@Override
			public void onSuccess(ArrayList<Integer> result) {
				label1.setText("Vous avez " + result.get(0)
						+ " contacts.");
				label2.setText("Vous avez " + result.get(1)
						+ " contacts de second niveau.");
				if (result.get(2) != 0) {
					label3.setText("Vous avez " + result.get(2)
							+ " contacts de troisième niveau.");
				}
				if (result.get(3) != 0) {
					label4.setText("Vous avez " + result.get(3)
							+ " contacts de quatrième niveau.");
				}
				if (result.get(4) != 0) {
					label5.setText("Vous avez " + result.get(4)
							+ " contacts de cinquième niveau.");
				}
			}

			@Override
			public void onFailure(Throwable caught) {

			}
		});

		initWidget(flux);
	}
}
